home *** CD-ROM | disk | FTP | other *** search
/ PD ROM 1 / PD ROM Volume I - Macintosh Software from BMUG (1988).iso / Programming / Programming Tools / Turbo Pascal / Logweed / LOGWEED.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1987-07-01  |  2.9 KB  |  114 lines  |  [TEXT/ttxt]

  1. Program Logweed;  {weeds out records of less than specified time length}
  2.  
  3. Type
  4.   Datestring = string[8];
  5.   CommentString = string[12];
  6.  
  7. LogRec = Record
  8.   usage: char;              {usage type, i.e. business/personal}
  9.   start_date_log : Datestring;     {start date}
  10.   start_time_log : Datestring;     {start time}
  11.   elapsed_log    : Datestring;     {elapsed time}
  12.   comment        : CommentString;  {comment}
  13.   end;
  14.  
  15. Var
  16.   logfile, weedfile : file of LogRec;
  17.   realtime, weedtime: Real;
  18.   log_data          : LogRec;
  19.   ch                : char;
  20.   i                 : integer;
  21.  
  22. function exist(file_name: commentstring): boolean;
  23.   var test_file: file;
  24.   begin
  25.   assign(test_file,file_name);
  26.   {$I-} reset(test_file) {$I+};
  27.   if (IOresult=0) then begin
  28.     exist:=true;
  29.     close(test_file);
  30.     end
  31.   else exist:=false;
  32.   end; {function exist}
  33.  
  34.  
  35. Function elapsed_real_time(tempstring: Datestring): real;
  36. var
  37.   temp, temptime : real;
  38.   err            : integer;
  39. begin
  40.   val(copy(tempstring,1,2),temptime,err); {get hours}
  41.   val(copy(tempstring,4,2),temp,err);
  42.   temptime := temptime + (temp/60);       {get fraction of hours from minutes}
  43.   val(copy(tempstring,7,2),temp,err);
  44.   temptime := temptime + (temp/3600);     {get fraction of hours from seconds}
  45.   elapsed_real_time := temptime;
  46. end;
  47.  
  48.  
  49. procedure get_weedtime;
  50. var
  51.   temp : string[16];
  52.   err  : integer;
  53. begin
  54.   repeat
  55.     writeln;
  56.     writeln('Enter minimum elapsed time for records, in decimal hours');
  57.     write('(i.e. "0.1" for 6 minutes, "0.05" for 3 minutes): ');
  58.     readln(temp);
  59.     val(temp,weedtime,err);
  60.   until err=0;
  61. end;
  62.  
  63. Begin   {program}
  64.  
  65.   lowvideo;
  66.   clrscr;
  67.   writeln;
  68.   writeln('This program looks for "TIME.LOG" in the current directory');
  69.   writeln('and removes files with elapsed times of less than the amount');
  70.   writeln('you specify. The original file is saved as "TIME.BAK."');
  71.   writeln;
  72.   writeln('Press any key to proceed, ^C to abort....');
  73.   read(kbd,ch);
  74.  
  75.   get_weedtime;
  76.  
  77.   If not exist('TIME.LOG') then
  78.   begin
  79.     writeln('Can''t find "TIME.LOG" in current directory.');
  80.     halt;
  81.   end;
  82.   if exist('TIME.BAK') then
  83.   begin
  84.     assign(logfile,'TIME.BAK');
  85.     erase(logfile);
  86.   end;
  87.   Assign(logfile,'TIME.LOG');
  88.   Rename(logfile,'TIME.BAK');
  89.   Reset(logfile);
  90.   Assign(weedfile,'TIME.LOG');
  91.   Rewrite(weedfile);
  92.  
  93.   for i := 0 to filesize(logfile)-1 do
  94.   begin
  95.     seek(logfile,i);
  96.     read(logfile,log_data);
  97.     if not (elapsed_real_time(log_data.elapsed_log)<weedtime) then
  98.     write(weedfile,log_data)
  99.     else
  100.     begin
  101.       writeln;
  102.       writeln(log_data.start_date_log,'   ',
  103.               log_data.start_time_log,'   ',
  104.               log_data.elapsed_log,'   ');
  105.       writeln(log_data.comment);
  106.     end;
  107.   end;
  108.   close(logfile);
  109.   close(weedfile);
  110.   writeln;
  111.   writeln('Done... Any short-timers printed above were removed from the file.');
  112.   writeln;
  113. End.
  114.